<?php 
/**
* Klass FILE UPLOAD CONTROLLER - Används för att admin ska kunna ladda upp en faktura till en specifik kund.
* Controllern bestämmer vad som ska skrivas ut till användaren genom att "prata" med vyn och handlern.
*/
	// --------------------------------------------
	require_once '../View/FileUploadView.php';
	require_once '../Model/FileUploadHandler.php';
	// --------------------------------------------

	class FileUploadController
	{		
		private $path = "../uploadedInvoice/";
		
		//----- FUNKTION: DO FILE UPLOAD CONTROLL ------------------------------------------------------------------------------------------------------- 
		/**
		 * Den går igenom händelseförlopet när en användare försöker ladda upp en fil.
		 * @param string $loginHandler Innehåller objekt av typen LoginHandler.
		 * @param string $database Innehåller objekt av typen Database.
		 * @return string $content Filuppladdnings formuläret.
		 */
		public function DoFileUploadControll(LoginHandler $loginHandler, Database $database)
		{
			// Skapar objekt.
			$assignmentView = new AssignmentView();
			$fileUploadView = new FileUploadView();
			$fileUploadHandler = new FileUploadHandler($database);
			$message = FileUploadView::EMPTY_MESSAGE;
			$content = "";		
			
			// Först kontrollerar vi om användaren har försökt att ladda upp en fil.
			if ($fileUploadView->TriedToUpload()) {
				$myFile = $fileUploadView->GetFile();
				
				// Vi börjar med att kontrollera om filnamnet redan existerar.
				if ($fileUploadHandler->ControllOfFilename($myFile, $this->path)) {
					$message = FileUploadView::FILENAME_EXIST;
				
				// Sen kontrollerar vi filtypen på den aktuella filen som försöker laddas upp.
				} else if ($fileUploadHandler->FileTypeController($myFile, $this->path) == true) {					
					$fileUploadHandler->SaveFile($myFile, $this->path);
					$message = FileUploadView::SUCCESS_FILEUPLOAD;
					
					// Vi tar namnet på den uppladdade filen och hämtar ut kund ID:et och skickar tillsammans upp det till databasen via fileupload handler. 
					$myFileName = $myFile['name'];
					$customerID = intval($assignmentView->GetCustomerID());
					$invoiceID = $fileUploadHandler->InsertFilenameToTableInvoice($customerID, $myFileName);
				// Annars är det fel fil-ändelse.	
				} else {
					$message = FileUploadView::WRONG_EXTENSION;
				}

				// Om användaren inte har valt någon fil att ladda upp så skrivs ett felmeddelande ut.
				if ($myFile["name"] == "") {
					$message = FileUploadView::NO_FILE_SELECTED;
				}
				
			}
			// Hämtar ut rätt meddelanden. 
			$message = $fileUploadView->MessageHolder($message);
			
			// Vi hämtar ut alla kunder och skickar med dom till vår dropdown som skapas i vyn. Sedan skickar vi med meddelanden och dropdow menyn i vår content.
			$existingCustomers = $loginHandler->GetAllCustomers();
			$existingCustomersDropDown = $assignmentView->DoExistingCustomerChoiceDropDown($existingCustomers);
			$content = $fileUploadView->CreateFileUploadView($message, $existingCustomersDropDown);			
			
			return $content;
		}
	}
 ?>